package code;

public class Test {
    public static double gaussian(double x, double A, double mu, double sigma) {
        return A * Math.exp(-0.5 * Math.pow((x - mu) / sigma, 2));
    }

    // 计算高斯曲线的高度
    public static double calculateHeight(double S, double mu, double sigma) {
        double sqrt2pi = Math.sqrt(2 * Math.PI);
        double A = S / (sqrt2pi * sigma);
        return A;
    }

    public static void main(String[] args) {
        double T = 80000; // 一天的总秒数
        double amplitude = 20000; // 峰值，表示人数
        double mean = 25200; // 均值，表示高峰出现的时间点，假设在早上7点
        double std_dev = 3600; // 标准差，控制高斯曲线的宽度

        // 计算不同时间点的人数
        int totalPeople = 0;
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("[");
        for (int i = 0; i <= T; i += 60) { // 每10s一次
            int count = userCount(i);
            stringBuffer.append("["+i+","+count+"]");
            stringBuffer.append(",");
            //stringBuffer.append(i+","+count+"\n");
        }
        stringBuffer.append("]");
        System.out.println(stringBuffer.toString());

    }



    public static int userCount(int x) {
        int maxUsers = 40000; // 封顶值
        if (x < 0 || x > 86400) { // 超出范围返回0人
            return 0;
        } else if (x >= 0 && x < 25200) { // 0点到7点，10%增长
            return (int) (maxUsers * 0.1 * (x / 25200.0));
        } else if (x >= 25200 && x < 32400) { // 7点到9点，70%增长
            return (int) (maxUsers * (0.7 * ((x - 25200) / 7200.0)));
        } else if (x >= 32400 && x < 46800) { // 9点到13点，90%增长
            return (int) (maxUsers * (0.9 * ((x - 32400) / 14400.0)));
        } else if (x >= 46800 && x < 64800) { // 13点到18点，95%增长
            return (int) (maxUsers * (0.95 * ((x - 46800) / 18000.0)));
        } else if (x >= 64800 && x < 75600) { // 18点到21点，99%增长
            return (int) (maxUsers * (0.99 * ((x - 64800) / 10800.0)));
        } else { // 21点到24点，100%增长
            return (int) (maxUsers * (((x - 75600) / 10800.0)));
        }




    }
}
